SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[FU_SERI_DOCU] 
/*------------------------------------------------------*/      
/*---- Empresa           : OFISIS S.A.              ----*/      
/*---- Cliente           : OFISIS S.A.              ----*/      
/*---- Nombre FU         : FU_SERI_DOCU		    ----*/      
/*---- Desarrollado por  : Daniel Chiang 	    ----*/      
/*---- Fecha Creación    : 10/07/2008               ----*/      
/*---- Base de Datos     : SLQ Server               ----*/      
/*---- Versión           : 8.0                      ----*/      
/*------------------------------------------------------*/      
/*---Modificado 1 por     :                         ----*/    
/*---Fecha Modificación   :                         ----*/    
/*---Detalle Modificación :                         ----*/    
/*------------------------------------------------------*/      



(
@ISTI_DOCU		VarChar(03),
@ISNU_DOCU		VarChar(20)
)

Returns  VarChar(20)
As
Begin
  Declare
  @VSNU_DOCU_INPU		TD_VC_020,
  @VSNU_DOCU_SERI		TD_VC_020,
  @VSNU_DOCU_CORR		TD_VC_020,
  @VSNU_DOCU			TD_VC_020,
  @VSST_SERI			TD_VC_001,
  @VSST_FILL			TD_VC_001,
  @VNNU_LONG			TD_IN_001,
  @VNNU_LONG_SERI		TD_IN_001,

  @VSNU_SERI_OUTP		TD_VC_020,
  @VSNU_CORR_OUTP		TD_VC_020,

  @VNNU_LONG_GUIO		TD_IN_001,
  @VNNU_LONG_DOCU		TD_IN_001


	Select @VSNU_DOCU_INPU = RTrim(LTrim(@ISNU_DOCU))
	
	Select @VNNU_LONG_GUIO = PatIndex('%-%', @VSNU_DOCU_INPU) , @VNNU_LONG_DOCU = Len(@VSNU_DOCU_INPU) - PatIndex('%-%', @VSNU_DOCU_INPU)

	If @VNNU_LONG_GUIO = 0
		Select	@VSNU_DOCU_SERI = ''	, @VSNU_DOCU_CORR = @VSNU_DOCU_INPU		
	Else
		Select	@VSNU_DOCU_SERI = SubString(@VSNU_DOCU_INPU,1, @VNNU_LONG_GUIO - 1),
				@VSNU_DOCU_CORR = SubString(@VSNU_DOCU_INPU,@VNNU_LONG_GUIO + 1, @VNNU_LONG_DOCU)


	--- Obtenemos Configuración del Documento ---- 
	Select  @VSST_SERI  = t1.ST_SERI, 
			@VNNU_LONG_SERI  = t1.NU_LONG_SERI,
			@VSST_FILL  = t1.ST_FILL,
			@VNNU_LONG  = t1.NU_LONG
	From    TTDOCU_CNTB t1
	Where   t1.TI_DOCU = @ISTI_DOCU 

	---- Evaluamos si Tiene Número de Serie
	If @VSST_SERI = 'S' 
	Begin
		if 	@VNNU_LONG_SERI < @VNNU_LONG_GUIO 
			Select @VNNU_LONG_GUIO = @VNNU_LONG_SERI

		Select @VSNU_SERI_OUTP = Replicate('0',@VNNU_LONG_SERI - (@VNNU_LONG_GUIO-1)) + @VSNU_DOCU_SERI + '-'

		if @VSST_FILL = 'S'
		Begin
			if 	@VNNU_LONG < @VNNU_LONG_DOCU 
				Select @VNNU_LONG_DOCU = @VNNU_LONG

			Select @VSNU_CORR_OUTP = Replicate('0',@VNNU_LONG - @VNNU_LONG_DOCU) + @VSNU_DOCU_CORR

		End
		Else
			Select @VSNU_CORR_OUTP = @VSNU_DOCU_CORR
		
	End
	Else
	Begin
		Select @VSNU_SERI_OUTP = ''
		if @VSST_FILL = 'S'
		Begin
			if 	@VNNU_LONG < @VNNU_LONG_DOCU 
				Select @VNNU_LONG_DOCU = @VNNU_LONG

			Select @VSNU_CORR_OUTP = Replicate('0',@VNNU_LONG - @VNNU_LONG_DOCU) + @VSNU_DOCU_CORR
		End
		Else
			Select @VSNU_CORR_OUTP = @VSNU_DOCU_CORR

	End

	Select @VSNU_DOCU = @VSNU_SERI_OUTP + @VSNU_CORR_OUTP



Return @VSNU_DOCU
End


/*------------------------ FIN ----------------------------*/

GO
